iT邦幫忙

2022 iThome 鐵人賽

DAY 29
1
Software Development

C語言與C++語言系列 第 29

C語言與C++語言第二十九天

  • 分享至 

  • xImage
  •  

C語言查詢最接近的數字

讓使用者輸入10個整數後,輸入要查詢的數字後,顯示輸入的整數中最接近的一個,輸入0則表示結束,我們可以使用C語言的陣列來成,下程式碼

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,q,n[10];
    for(i=1;i<=10;i++){
        scanf("%d", &n[i-1]);
    }
    printf("Q: ");
    scanf("%d", &q);
    int nearest_n=n[0];
    printf("%d\n", nearest_n);
    for(i=1;i<=10;i++){
        if(abs(q-n[i])<abs(q-nearest_n)||
        (abs(q-n[i])==abs(q=nearest_n)&&
        n[i]<nearest_n)){
            nearest_n=n[i];
        }
    }
    printf("%d\n", nearest_n);
    return 0;
}

上面的程式碼中,我們讓使用者輸入10個數字讓他去查詢在輸入一個數字讓他去查詢最接近的數字,首先我們我們先宣告3個數字,for迴圈讓i跑十次在n[10]裡面有十個元素從0到9的陣列裡,接著我們進入查詢的模式,所以我們printf出Q讓使用者輸入,scanf鍵盤輸入q最接近的值,我們在宣告nearest_n一個最接近的值,第二個for迴圈我們也讓他跑10次,if中的距離怎麼算麼就是相減,如果我們q與n陣列中的i元素相減比q與nearest_n原本最接近的還要小我們原本最近的就換n[i]做,由於我們距離是正的,所以我們要用abs來顯示不管-3顯示3或是3也會顯示3距離是正的,||或假設如果3和5 7和5的距離都是2我們會希望顯示3所以我們就要用到(abs(qn[i])==abs(q=nearest_n)&&n[i]<nearest_n)就是如果我們兩個一樣近,我們就比我們原本的nearest_n小還是新的n[i]小如果新的小最近的就換n[i]新的做,最後印出來就是我們要查詢最接近的數字了


上一篇
C語言與C++語言第二十八天
下一篇
C語言與C++語言第三十天
系列文
C語言與C++語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言